package com.wongoing.sys.service.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.wongoing.base.BaseServiceImpl;
import com.wongoing.base.PageResult;
import com.wongoing.sys.dao.SysConfigDao;
import com.wongoing.sys.model.SysConfig;
import com.wongoing.sys.service.SysConfigService;
import com.wongoing.util.Constants;
/**
 * 功能说明：系统配置表（用来记录系统的常量配置）
 * 修改说明：
 * @author 吴兆强
 * @date 2018年3月16日 上午9:25:41
 * @version V0.1
 */
@Service("sysConfigService")
@Transactional
public class SysConfigServiceImpl extends BaseServiceImpl<SysConfig> implements SysConfigService {
	
	private SysConfigDao dao;

	@Autowired
	public void setDao(SysConfigDao dao) {
		super.setDao(dao);
		this.dao = dao;
	}
	
	/**
	 * 功能说明：在内存中初始化系统配置
	 * 修改说明：
	 * @author 吴兆强
	 * @date 2018年3月16日 上午9:26:16
	 * @throws Exception
	 */
	public void initAllConfig() throws Exception {
		Map<String, Object> params = new HashMap<String, Object>();
		params.put("Status", Constants.PERSISTENCE_ENABLE_STATUS);
		List<SysConfig> configs = this.dao.getByParam(params);
		for (SysConfig config : configs) {
			SysConfig.allConfigs.put(config.getCfgCode(), config);
		}
	}

	/**
	 * 功能说明：刷新系统配置项
	 * 修改说明：
	 * @author 吴兆强
	 * @date 2018年3月16日 上午9:27:36
	 * @throws Exception
	 */
	public void refleshConfigCach() throws Exception {
		SysConfig.allConfigs.clear();
		initAllConfig();
	}

	/**
	 * 功能说明：根据条件获取配置表中的数据条数
	 * 修改说明：
	 * @author 吴兆强
	 * @date 2018年3月16日 上午9:28:00
	 * @param param
	 * @return
	 */
	public Integer countOfConfigList(Map<String, Object> param) {
		return dao.countOfConfigList(param);
	}

	/**
	 * 功能说明：获取分页数据（后台管理系统使用）
	 * 修改说明：
	 * @author 吴兆强
	 * @date 2018年3月16日 上午9:28:53
	 * @param pageResult
	 * @return
	 */
	public PageResult<SysConfig> getConfigListPageReuslt(PageResult<SysConfig> pageResult) {
		pageResult.getParam().put("offset", pageResult.getPageSize() * (pageResult.getPageCurrent() - 1));
		pageResult.getParam().put("limit", pageResult.getPageSize());
		if (!"".equals(pageResult.getOrderField())) { pageResult.getParam().put("orderColumn", pageResult.getOrderField()); }
		pageResult.getParam().put("orderTurn", pageResult.getOrderDirection());
		List<SysConfig> data = this.dao.getConfigListByParam(pageResult.getParam());
		pageResult.setList(data);
		int totalSize = this.dao.countByParam(pageResult.getParam());
		pageResult.setTotal(totalSize);
		return pageResult;
	}
	
}
